/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.tarifador.controller;

import br.com.tarifador.dao.TarifadorDao;
import br.com.tarifador.model.*;
import java.util.List;

/**
 *
 * @author charles
 */
public class RamalRN {

    private Ramal ramal = new Ramal();
    private Empresa empresa = new Empresa();
    private CentroDeCusto custo = new CentroDeCusto();
    private UsuarioRamal usuario = new UsuarioRamal();
    private Senha senhaRamal = new Senha();
    private TarifadorDao<Ramal> dao;
    private String messagemCount;
    private String numeroTxt;

    public boolean salvarRamal() {
        dao = new TarifadorDao<Ramal>(Ramal.class);
        boolean valida = false;
        try {

            ramal.setNumero(Long.valueOf(numeroTxt));
            if (ramal.getNumero() > 0 && ramal.getNumero() != null) {
                valida = dao.save(ramal);
                  countRamal(); 
            }
        } catch (NullPointerException e) {
            valida = false;
            throw new RuntimeException(e);
        }
        return valida;
    }

    public List<Ramal> carregaListaRamal() {
        dao = new TarifadorDao<Ramal>(Ramal.class);
        List<Ramal> lista = dao.listall();
        countRamal(); 
        return lista;
    }

    public boolean updateRamal(Ramal idRamal) {
        dao = new TarifadorDao<Ramal>(Ramal.class);
        boolean valida = false;
        if (idRamal != null) {
            ramal.setId(idRamal.getId());
            valida = dao.update(ramal);
        }
        return valida;
    }

    public void limparCampos() {
        this.ramal.setNome("");
        this.ramal.setNumero(null);
        this.ramal.setCusto(null);
        this.ramal.setEmpresa(null);
        this.ramal.setSenha(null);
        this.ramal.setUsuario(null);
        this.numeroTxt = "";
    }

    public String countRamal() {
        dao = new TarifadorDao<Ramal>(Ramal.class);
        Long valor = dao.countAllObject();
        return this.messagemCount = valor.toString() + " ramais cadastrados.";
    }

    public boolean deletaRamal(Long idRamal) {
        dao = new TarifadorDao<Ramal>(Ramal.class);
        boolean valida = false;
        if (idRamal != null) {
            ramal.setId(idRamal);
            valida = dao.delete(ramal);
            countRamal();
        }
        return valida;
    }

    public List<Ramal> listaDeRamais() {
        dao = new TarifadorDao<Ramal>(Ramal.class);
        List<Ramal> lista = dao.listall();
        return lista;
    }

    public String sobreRamal() {
        String texto = "O cadastro de ramais permite a geração de relátórios atráves de cada ramal cadastrado no PABX"
                + "ramais não cadastrados não seram tarifados.";
        return texto;
    }
    public List<CentroDeCusto> carregaCentroDeCusto(){
       TarifadorDao<CentroDeCusto> dao = new TarifadorDao<CentroDeCusto>(CentroDeCusto.class); 
       return dao.listall();       
    }
     public List<UsuarioRamal> carregaUsuarios() {
        TarifadorDao<UsuarioRamal> dao = new TarifadorDao<UsuarioRamal>(UsuarioRamal.class);
        return dao.listall();
    }

    public List<Empresa> carregaEmpresa() {
        TarifadorDao<Empresa> dao = new TarifadorDao<Empresa>(Empresa.class);
        return dao.listall();
    }

    public List<Senha> carregaSenha() {
        TarifadorDao<Senha> dao = new TarifadorDao<Senha>(Senha.class);
        return dao.listall();
    }
    public List<Departamento> carregaDepartamento (){
     TarifadorDao<Departamento> dao = new TarifadorDao<Departamento>(Departamento.class);  
     return dao.listall();      
    }
    //Getters and Setters 
    public TarifadorDao<Ramal> getDao() {
        return dao;
    }

    public CentroDeCusto getCusto() {
        return custo;
    }

    public void setCusto(CentroDeCusto custo) {
        this.custo = custo;
    }

    public Empresa getEmpresa() {
        return empresa;
    }

    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }

    public Ramal getRamal() {
        return ramal;
    }

    public void setRamal(Ramal ramal) {
        this.ramal = ramal;
    }

    public Senha getSenhaRamal() {
        return senhaRamal;
    }

    public void setSenhaRamal(Senha senhaRamal) {
        this.senhaRamal = senhaRamal;
    }

    public UsuarioRamal getUsuario() {
        return usuario;
    }

    public void setUsuario(UsuarioRamal usuario) {
        this.usuario = usuario;
    }

    public String getMessagemCount() {
        return messagemCount;
    }

    public void setMessagemCount(String messagemCount) {
        this.messagemCount = messagemCount;
    }

    public String getNumeroTxt() {
        return numeroTxt;
    }

    public void setNumeroTxt(String numeroTxt) {
        this.numeroTxt = numeroTxt;
    }
}
